package com.qdlc.p2p.dal.dao;

import com.qdlc.p2p.dal.common.dao.BaseDao;
import com.qdlc.p2p.dal.common.model.jpa.PageDataList;
import com.qdlc.p2p.dal.dto.AccountRecharge;
import com.qdlc.p2p.dal.dto.User;
import com.qdlc.p2p.dal.model.AccountRechargeModel;

/**
 * 充值Dao
 * 
 * @author xx
 * @version 2.0
 * @since 2014年3月20日
 */
public interface AccountRechargeDao extends BaseDao<AccountRecharge> {

	/**
	 * 根据交易订单号获取充值记录
	 * 
	 * @param tradeNo
	 * @return
	 */
	AccountRecharge getRechargeByTradeno(String tradeNo);

	/**
	 * 修改充值费用问题
	 * 
	 * @param fee
	 * @param id
	 */
	void updateRechargeFee(double fee, long id);

	/**
	 * 成功充值信息
	 * 
	 * @param userId
	 * @return
	 */
	AccountRechargeModel getRechargeSummary(long userId);

	/**
	 * 等待审核的充值
	 * 
	 * @param status
	 * @return
	 */
	int count(int status);
	/**
	 * 更新充值状态
	 * @param id 主键Id
	 * @param status 状态
	 */
	void updateStatus(long id, int status);
    
    /**
     * 充值用户数
     * 
     * @return
     */
    int rechargedUserCount();

    /**
     * 投资人累计充值金额总和
     *
     * @return
     */
    double rechargedAllMoney();

	
	/**
	 * 获取充值记录列表，含分页
	 * 
	 * @param userId
	 * @return
	 */
	PageDataList<AccountRechargeModel> list(long userId, AccountRechargeModel model);
	
	/**
	 * 充值列表
	 * 
	 * @param model
	 * @return
	 */
	PageDataList<AccountRechargeModel> list(AccountRechargeModel model);


	/**
	 * 获取今日累计充值金额总和
	 */
	double todayRechargedAllMoney();

	/**
	 * 根据时间获取充值总数
	 * @param date
	 */
	double getRechargeAmountByDate(String date);

	/**
	 * 投资人累计充值金额总和
	 *
	 * @param
	 * @return
	 */
	double rechargedAllMomeny();

}
